public class Solution {
    /*
     * 活动选择；举办活动的最大数量
     * 判断：开始时间最早？？ 持续时间最短？？
     * 最优解：选取 结束时间最早的活动
     * 贪心：为后面预留出更大的空间
     *
     * */
    public static int greedyActivitySelector(int[][] act) {

        //按结束时间对数组排序
        //行：会议   列：0 开始时间； 1 结束时间
        Arrays.sort(act, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[1] - o2[1];
            }
        });

        int count = 1;
        if (act.length == 0) {
            return 0;
        }
        //下一次会议的开始时间 要<=结束时间
        int finish = act[0][1];
        for (int i = 1; i < act.length; i++) {
            if (act[i][0] >= finish) {
                count++;
                //更新结束时间
                finish = act[i][1];
            }
        }

        return count;
    }
}